package com.ims.core.doc.service;

import java.util.List;

import com.ims.core.doc.controller.vo.InvoiceCollectValidateVo;
import com.ims.core.doc.domain.TInCollect;
import com.ims.core.doc.vo.bwapi.InvoiceForRecogcollect;
import com.ims.core.doc.vo.bwapi.InvoiceForValidate;
import com.ims.core.enums.CollectType;

/**
 * 发票采集Service接口
 *
 * @author IMS
 * @date 2024-07-24
 */
public interface ITInCollectService
{
    /**
     * 查询发票采集
     *
     * @param id 发票采集主键
     * @return 发票采集
     */
    public TInCollect selectTInCollectById(Long id);

    /**
     * 查询发票采集
     *
     * @param collectId 发票采集主键
     * @return 发票采集
     */
    public TInCollect selectTInCollectByCollectId(String collectId);

    /**
     * 查询发票采集列表
     *
     * @param tInCollect 发票采集
     * @return 发票采集集合
     */
    public List<TInCollect> selectTInCollectList(TInCollect tInCollect);

    /**
     * 新增发票采集
     *
     * @param tInCollect 发票采集
     * @return 结果
     */
    public int insertTInCollect(TInCollect tInCollect);

    /**
     * 修改发票采集
     *
     * @param tInCollect 发票采集
     * @return 结果
     */
    public int updateTInCollect(TInCollect tInCollect);

    /**
     * 批量删除发票采集
     *
     * @param ids 需要删除的发票采集主键集合
     * @return 结果
     */
    public int deleteTInCollectByIds(Long[] ids);

    /**
     * 删除发票采集信息
     *
     * @param id 发票采集主键
     * @return 结果
     */
    public int deleteTInCollectById(Long id);

    /**
     * 发票采集-图片识别
     * @param invoiceForRecogcollectList
     */
    void inInvoiceRecogcollectByImport(List<InvoiceForRecogcollect> invoiceForRecogcollectList );

    /**
     * 发票采集- 查验方式
     * @param collectType 采集方式
     * @param invoiceCollectExcelVoList
     */
    void inInvoiceRecogcollectByValidate(List<InvoiceCollectValidateVo> invoiceCollectExcelVoList , CollectType collectType);

    /**
     * 查验发票
     * @param collectId
     * @param invoiceForValidateList
     */
    void invoiceValidate(String collectId, List<InvoiceForValidate> invoiceForValidateList);
}
